In [1]:
#!/usr/bin/env python3
import os
os.system('CLS') 
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
from plotly import tools
import importlib
import math
import sys
from functools import partial
from IPython.display import display
import biventricularModel
importlib.reload(biventricularModel)
from biventricularModel import *
import numpy as np
import pandas as pd
import GPDataSet
importlib.reload(GPDataSet)
from GPDataSet import*
import copy
import Error
importlib.reload(Error)
from Error import*
init_notebook_mode(connected=True)
import warnings
warnings.filterwarnings("ignore")
import numpy
import cvxopt
In [2]:
# file containing 3D points, labels, slice number and time frame
case = 'AKL'
filename = './TestHao/GPFileAKL.txt'            # file containing 3D points, labels, slice number and time frame
filenameInfo = './TestHao/SliceInfoFile.txt'  # file containing dicom info - not needed here 

# Path to your working directory
saving_path = './'                                       # this is where the results are saved

DataSet = GPDataSet(filename,filenameInfo,case,1)  

# Loads biventricular control_mesh
control_mesh = (pd.read_table("./model.txt",delim_whitespace=True,header=None)).values

biventricular_model = biventricularModel(control_mesh,DataSet,case,filenameInfo)

scale = biventricular_model.UpdatePoseAndScale()

[Mitral_phantom,Mitral,Tricuspid_phantom,Tricuspid,Pulmonary_phantom,Pulmonary,Aorta_phantom,Aorta,RV,RVS,LV,Epi,RVinsert,Apex] = DataSet.PlotDataSetEvenlySpaced()

Model = biventricular_model.PlotSurface("rgb(0,127,0)","rgb(0,0,127)","rgb(127,0,0)","Initial model","all")

data = Model+ Mitral_phantom+Mitral+Tricuspid_phantom+Tricuspid+Pulmonary_phantom+Pulmonary+Aorta_phantom+Aorta+RV+RVS+LV+Epi+RVinsert+Apex
iplot(go.Figure(data= go.Data(data)))
In [3]:
weight_GP = 40
biventricular_model.MultiThreadSmoothingED(case,weight_GP)

# Results
Model = biventricular_model.PlotSurface("rgb(0,127,0)","rgb(0,0,127)","rgb(127,0,0)","Initial model","all")
[Mitral_phantom,Mitral,Tricuspid_phantom,Tricuspid,Pulmonary_phantom,Pulmonary,Aorta_phantom,Aorta,RV,RVS,LV,Epi,RVinsert,Apex] = biventricular_model.DataSet.PlotDataSetEvenlySpaced()

data = Model + Mitral_phantom+Mitral+Tricuspid_phantom+Tricuspid+Pulmonary_phantom+Pulmonary+Aorta_phantom+Aorta+RV+RVS+LV+Epi+RVinsert+Apex
iplot(go.Figure(data= go.Data(data)))
Iteration #1 for the implicitly constrained fit
Iteration #2 for the implicitly constrained fit
Iteration #3 for the implicitly constrained fit
Iteration #4 for the implicitly constrained fit
Iteration #5 for the implicitly constrained fit
Iteration #6 for the implicitly constrained fit
Iteration #7 for the implicitly constrained fit
Iteration #8 for the implicitly constrained fit
Iteration #9 for the implicitly constrained fit
Iteration #10 for the implicitly constrained fit
End of the implicitly constrained fit
--- 61.232649087905884 seconds ---
In [4]:
transmural_weight = 0.01
low_smoothing_weight = 1000
biventricular_model.SolveProblemCVXOPT(case,weight_GP,low_smoothing_weight,transmural_weight)
Iteration #1 for the explicitly constrained fit
Iteration #2 for the explicitly constrained fit
--- End of the explicitly constrained fit ---
--- 60.82685160636902 seconds ---
In [5]:
# Results
ModelEndo = biventricular_model.PlotSurface("rgb(0,127,0)","rgb(0,0,127)","rgb(127,0,0)","Initial model","endo")
ModelEpi = biventricular_model.PlotSurface("rgb(0,127,0)","rgb(0,0,127)","rgb(127,0,0)","Initial model","epi")
Model = biventricular_model.PlotSurface("rgb(0,127,0)","rgb(0,0,127)","rgb(127,0,0)","Initial model","all")

[Mitral_phantom,Mitral,Tricuspid_phantom,Tricuspid,Pulmonary_phantom,Pulmonary,Aorta_phantom,Aorta,RV,RVS,LV,Epi,RVinsert,Apex] = biventricular_model.DataSet.PlotDataSetEvenlySpaced()

data = ModelEndo + Mitral+Tricuspid+Pulmonary+Aorta+RV+RVS+LV+RVinsert+Apex
iplot(go.Figure(data= go.Data(data)))

data = ModelEpi + Mitral+Tricuspid+Pulmonary+Aorta+Epi+Apex
iplot(go.Figure(data= go.Data(data)))

data = Model + Mitral+Tricuspid+Pulmonary+Aorta+RV+RVS+LV+RVinsert+Apex+Epi
iplot(go.Figure(data= go.Data(data)))
In [6]:
#!jupyter nbconvert --to html Untitled.ipynb